var express = require('express');
var router = express.Router();
const { generateToken, getDecryptToken } = require('../token/api')
const { login, getUserInfo, getFriends } = require('../sqltools/api')
/* GET home page. */
router.get('/', function (req, res, next) {
  console.log(req)
  res.send('你请求了api接口')
});

/* 登录验证 */
router.post('/login', async function (req, res, next) {
  let result = await login(req.body.username, req.body.password)
  // 如果用户存在
  if (result.length) {
    res.send({
      code: 1,
      message: '登录成功',
      data: {
        userInfo: result.map(item => {
          // 删除用户信息中的password
          delete item.s_password
          // 生成用户token
          let token = generateToken({ ...item })  //需要将对象解构一下，因为item是RowDataPacket会导致报错
          item.token = token
          return item
        })
      }
    })
  } else {
    res.send({
      code: 0,
      message: '登录失败，用户名或密码不正确',
    })
  }
});

/* 获取用户信息 */
router.get('/userinfo', async function (req, res, next) {
  let result = await getUserInfo(req.query.username)
  // 如果用户存在
  if (result.length) {
    res.send({
      code: 1,
      message: '获取用户信息成功',
      data: {
        userInfo: result.map(item => {
          // 删除用户信息中的password
          delete item.s_password
          return item
        })
      }
    })
  } else {
    res.send({
      code: 0,
      message: '获取失败',
    })
  }
})
/* 获取用户好友列表信息 */
router.get('/getfriends', async function (req, res, next) {
  let result = await getFriends(req.query.username)
  // 如果用户存在
  if (result.length) {
    // 根据好友信息名查询详细信息
    let infos = []
    let i = 0;
    async function getInfo() {
      let info = await getUserInfo(result[i].s_guest_name)
      infos.push(...info)
      i++;
      if (i < result.length) {
        getInfo()
      } else {
        // console.log(infos)
        res.send({
          code: 1,
          message: '获取成功',
          data: {
            friends: infos.map(item => {
              // 删除用户信息中的password
              delete item.s_password
              return item
            })
          }
        })
      }
    }
    getInfo()
  } else {
    res.send({
      code: 0,
      message: '获取失败',
    })
  }
})
module.exports = router;
